function onEdit(e) {
  var ss = e.source;
  var sheet = ss.getActiveSheet();
  var sheetName = sheet.getName();
  var logSheetName = "编辑日志";
  
  // 排除对日志表自身的编辑
  if (sheetName === logSheetName) return;

  // 获取或创建日志表（确保列顺序正确）
  var logSheet = ss.getSheetByName(logSheetName);
  if (!logSheet) {
    logSheet = ss.insertSheet(logSheetName);
  }
  if (logSheet.getLastRow() === 0) {
    // 调换后的表头：时间戳在前，日期在后
    logSheet.appendRow(["工作表名称", "时间戳（UTC）", "日期（东八区）", "编辑者姓名", "编辑者邮箱"]);
  }
  
  // 获取编辑者信息
  var editor = e.user;
  var editorEmail = editor ? editor.getEmail() : "未知用户";
  var editorName = editor ? editor.getUsername() : "未知用户";

  
  // 固定时区为东八区
  var timeZone = "Asia/Shanghai";
  var timestamp = new Date().getTime();
  var dateString = Utilities.formatDate(new Date(timestamp), timeZone, "yyyy-MM-dd HH:mm:ss");
  
  // 获取日志表数据范围
  var dataRange = logSheet.getDataRange();
  var data = dataRange.getValues();
  var foundIndex = -1;
  
  // 遍历查找匹配的工作表记录
  for (var i = 1; i < data.length; i++) { // 从第2行开始（跳过表头）
    if (data[i][0] === sheetName) {
      foundIndex = i;
      break;
    }
  }
  
  // 构建数据数组（调换时间戳和日期顺序）
  var newData = [sheetName, timestamp, dateString, editorName, editorEmail];
  
  if (foundIndex !== -1) {
    // 更新现有记录（覆盖整行5列）
    logSheet.getRange(foundIndex + 1, 1, 1, 5).setValues([newData]);
  } else {
    // 追加新记录（调换后的列顺序）
    logSheet.appendRow(newData);
  }
}